package com.jrx.anytxn.param.service.product;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.dto.product.InstallmentFeeTableReq;
import com.jrx.anytxn.param.dto.product.InstallmentFeeTableRes;
import com.jrx.anytxn.param.entity.PrInstallmentFeeTable;

/**
 * 分期手续费表 业务接口
 *
 * @author yx
 * @date 2019/4/30
 */
public interface IInstallmentFeeTableService {


    /**
     * 根据租户ID分页查询分期手续费参数信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.common.data.TxnPage<com.jrx.anytxn.param.dto.product.InstallmentFeeTableRes>
     * @author fan.yang
     * date: 2019/10/14 0014 上午 11:27
     */
    TxnPage<InstallmentFeeTableRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;


    /**
     * 添加分期手续费参数
     *
     * @param installmentFeeTableReq 分期手续费请求参数
     * @return com.jrx.anytxn.param.dto.product.InstallmentFeeTableRes
     * @author fan.yang
     * date: 2019/10/14 0014 上午 11:30
     */
    InstallmentFeeTableRes addInstallmentFeeTable(InstallmentFeeTableReq installmentFeeTableReq) throws TxnException;


    /**
     * 更新分期手续费参数
     *
     * @param installmentFeeTableReq 分期手续费参数入参对象
     * @return InstallmentFeeTableRes 分期手续费参数响应参数
     * @throws TxnException
     */
    InstallmentFeeTableRes modifyInstallmentFeeTable(InstallmentFeeTableReq installmentFeeTableReq) throws TxnException;

    /**
     * 通过租户ID和费用ID删除分期手续费参数
     *
     * @param tenantId         租户Id
     * @param installmentFeeId 费用ID
     * @return java.lang.Boolean
     * @author fan.yang
     * date: 2019/10/14 0014 上午 11:39
     */
    Boolean removeByTenIdAndFeeId(String tenantId, String installmentFeeId) throws TxnException;

    /**
     * 通过租户ID和分期手续费ID查询分期手续费参数
     *
     * @param tenantId         租户Id
     * @param installmentFeeId 分期手续费ID
     * @return com.jrx.anytxn.param.dto.product.InstallmentFeeTableRes
     * @author fan.yang
     * date: 2019/10/14 0014 上午 11:20
     */
    InstallmentFeeTableRes findByTenIdAndFeeId(String tenantId, String installmentFeeId) throws TxnException;

    /**
     * 通过费用ID及机构ID,租户ID获取费用信息
     *
     * @param installmentFeeId 费用ID
     * @param ordId            机构ID
     * @throws TxnBizException
     * @Author: haopu.zheng
     * @return: com.jrx.anytxn.param.account.dto.InstallmentFeeTableRes
     * @Date: 2019/7/30
     **/
    InstallmentFeeTableRes findByInstallmentFeeId(String installmentFeeId, String ordId, String tenantId) throws TxnBizException;

    /**
     * 通过费用ID及机构ID,租户ID获取费用信息
     *
     * @param installmentFeeId 费用ID
     * @param ordId            机构ID
     * @throws TxnBizException
     * @Author: haopu.zheng
     * @return: com.jrx.anytxn.param.account.dto.InstallmentFeeTableRes
     * @Date: 2019/7/30
     **/
    PrInstallmentFeeTable findInstallmentByFeeId(String installmentFeeId, String ordId, String tenantId) throws TxnBizException;
}
